znovu trigger a FB

Otázka od: Rostislav Lekes

4. 12. 2003 10:08

Cau,
jeste mam jeden dotaz:
jak muzu v triggeru BI,BU na FB 1.0.x otestovat povinne polozky? Tabulka ma
20 sloupcu a pri update potrebuju pohlidat, ze vybranych 5 z nich urcite
dostava novou hodnotu (ale pritom muze byt stejna jako predchozi,
USRID,STCID ....).
Diky,Rosta


Odpovedá: Pavel Cisar

5. 12. 2003 15:06

Haj hou!

On 4 Dec 2003 at 9:53, Rostislav Lekes wrote:

> jak muzu v triggeru BI,BU na FB 1.0.x otestovat povinne polozky?
> Tabulka ma 20 sloupcu a pri update potrebuju pohlidat, ze vybranych 5 z
> nich urcite dostava novou hodnotu (ale pritom muze byt stejna jako
> predchozi, USRID,STCID ....).

tohle je nejake zmatene  

1) Povinne polozky jsou ty, ktere maji NOT NULL.

2) V before insert je jasne, ze zadna puvodni hodnota neni. testuje
se tedy OLD.hodnota na NULL (neni zadana). Samozrejme, pokud tam z
klienta dotlacis *empty* hodnotu jako prazdny retezec, nulu apod.
misto null, bude mit trigger problem to rozpoznat od skutecneho
pozadavku na vlozeni takove hodnoty. V before update se testuje
NEW.hodnota.

S pozdravem
Pavel Cisar ( ICQ: 89017288)
Mobil: 724 281429
http://www.ibphoenix.cz
Vse co potrebujete pro Firebird a InterBase


Odpovedá: Rostislav Lekes

8. 12. 2003 8:29

> > jak muzu v triggeru BI,BU na FB 1.0.x otestovat povinne polozky?
> > Tabulka ma 20 sloupcu a pri update potrebuju pohlidat, ze vybranych 5 z
> > nich urcite dostava novou hodnotu (ale pritom muze byt stejna jako
> > predchozi, USRID,STCID ....).
>
> tohle je nejake zmatene  

Asi mam problem s vyjadrovanim  
povinnou polozkou myslim povinnou z hlediska logiky applikace, ne z hlediska
FB.
Muj problem je, jak ohlidat, aby jakykoliv update Field1 probehl pouze kdyz
se zaroven updatuje i Field2.
Je tomu uz rozumnet lip?
Rosta

> 1) Povinne polozky jsou ty, ktere maji NOT NULL.
>
> 2) V before insert je jasne, ze zadna puvodni hodnota neni. testuje
> se tedy OLD.hodnota na NULL (neni zadana). Samozrejme, pokud tam z
> klienta dotlacis *empty* hodnotu jako prazdny retezec, nulu apod.
> misto null, bude mit trigger problem to rozpoznat od skutecneho
> pozadavku na vlozeni takove hodnoty. V before update se testuje
> NEW.hodnota.


Odpovedá: Lebeda David

8. 12. 2003 8:49

> > > jak muzu v triggeru BI,BU na FB 1.0.x otestovat povinne polozky?
> > > Tabulka ma 20 sloupcu a pri update potrebuju pohlidat, ze
> > > vybranych 5 z nich urcite dostava novou hodnotu (ale pritom muze
> > > byt stejna jako predchozi, USRID,STCID ....).
> >
> > tohle je nejake zmatene  
>
> Asi mam problem s vyjadrovanim  
> povinnou polozkou myslim povinnou z hlediska logiky applikace, ne z
> hlediska FB. Muj problem je, jak ohlidat, aby jakykoliv update Field1
> probehl pouze kdyz se zaroven updatuje i Field2. Je tomu uz rozumnet
> lip? Rosta

Je to takhle? I kdyz si prejes zmenit jen Field 1 a chces nesahat na Field 2,
musis do
update prikazu uvest i Field 2, kde mu nezmenis hodnotu? Pokud ano, tak moc
nerozumim ucelu. Chapal bych, ze chces zaridit, aby v pripade upravy Field 1
bylo
urcite Field 2 not null (to triggerem ohlidas snadno), ale to, zda v update
prikazu bylo
Field 2 explicitne zmineno...to nevim, jestli v triggeru pujde rozpoznat.

David Lebeda

Odpovedá: petr palicka

8. 12. 2003 8:59

> Muj problem je, jak ohlidat, aby jakykoliv update Field1 probehl pouze kdyz
> se zaroven updatuje i Field2.

asi takto nejak v triggeru before update:
....
   if ((Old.Field1 is null and New.Field1 is not null or
        Old.Field1 is not null and New.Field1 is null or
        Old.Field1 <> New.Field1) and
       (Old.Field2 is null and New.Field2 is not null or
        Old.Field2 is not null and New.Field2 is null or
        Old.Field2 <> New.Field2)) then
     begin
/* obe pole byla zmenena */
     end
....

pokud zakazes null hodnoty v tech sloupcich, smrskne se
ti podminka na:
(Old.Field1 <> New.Field1 and Old.Field2 <> New.Field2)

peca


Odpovedá: Rostislav Lekes

8. 12. 2003 9:11


----- Original Message -----
From: "Lebeda David" <david.lebeda@comarr.cz>
To: <delphi-l@clexpert.cz>
Sent: Monday, December 08, 2003 8:16 AM
Subject: Re: znovu trigger a FB


> > > > jak muzu v triggeru BI,BU na FB 1.0.x otestovat povinne polozky?
> > > > Tabulka ma 20 sloupcu a pri update potrebuju pohlidat, ze
> > > > vybranych 5 z nich urcite dostava novou hodnotu (ale pritom muze
> > > > byt stejna jako predchozi, USRID,STCID ....).
> > >
> > > tohle je nejake zmatene  
> >
> > Asi mam problem s vyjadrovanim  
> > povinnou polozkou myslim povinnou z hlediska logiky applikace, ne z
> > hlediska FB. Muj problem je, jak ohlidat, aby jakykoliv update Field1
> > probehl pouze kdyz se zaroven updatuje i Field2. Je tomu uz rozumnet
> > lip? Rosta
>
> Je to takhle? I kdyz si prejes zmenit jen Field 1 a chces nesahat na Field
2, musis do
> update prikazu uvest i Field 2, kde mu nezmenis hodnotu? Pokud ano, tak
moc
> nerozumim ucelu. Chapal bych, ze chces zaridit, aby v pripade upravy Field
1 bylo
> urcite Field 2 not null (to triggerem ohlidas snadno), ale to, zda v
update prikazu bylo
> Field 2 explicitne zmineno...to nevim, jestli v triggeru pujde rozpoznat.
>
> David Lebeda

To je to co potrebuju.


Odpovedá: Rostislav Lekes

8. 12. 2003 9:14


----- Original Message -----
From: "petr palicka" <palicka.petr@seznam.cz>
To: <delphi-l@clexpert.cz>
Sent: Monday, December 08, 2003 8:49 AM
Subject: Re: znovu trigger a FB


> > Muj problem je, jak ohlidat, aby jakykoliv update Field1 probehl pouze
kdyz
> > se zaroven updatuje i Field2.
>
> asi takto nejak v triggeru before update:
> ....
> if ((Old.Field1 is null and New.Field1 is not null or
> Old.Field1 is not null and New.Field1 is null or
> Old.Field1 <> New.Field1) and
> (Old.Field2 is null and New.Field2 is not null or
> Old.Field2 is not null and New.Field2 is null or
> Old.Field2 <> New.Field2)) then
> begin
> /* obe pole byla zmenena */
> end
> ....
>
> pokud zakazes null hodnoty v tech sloupcich, smrskne se
> ti podminka na:
> (Old.Field1 <> New.Field1 and Old.Field2 <> New.Field2)
>
> peca

Jo ,tak jsem to mel taky, jenze to bude fungovat, jenom kdyz nova hodnota
Field2 bude odlisna od puvodni hodnoty. Ale ona muze byt nekdy stejna ...
Rosta


Odpovedá: petr palicka

8. 12. 2003 10:07

> > (Old.Field1 <> New.Field1 and Old.Field2 <> New.Field2)

> Jo ,tak jsem to mel taky, jenze to bude fungovat, jenom kdyz nova hodnota
> Field2 bude odlisna od puvodni hodnoty. Ale ona muze byt nekdy stejna ...
> Rosta

tak potom asi nechapu, co chces testovat. jestli jenom to, ze anijedno
Field* neni null, tak to staci dat jako vlastnost pole (not null) a
neni potreba na to delat trigger. pokud chces dosahnout toho, ze pole
muzou byt null, ale kdyz zadas jedno, musi byt vyplneno i druhe,
tak na to by sel udelat taky check, nebo v triggeru
...
if (Field1 is null and Field2 is null or
     Field1 is not null and Field2 is not null) then
...

peca


Odpovedá: Rostislav Lekes

8. 12. 2003 10:32


----- Original Message -----
From: "petr palicka" <palicka.petr@seznam.cz>
To: <delphi-l@clexpert.cz>
Sent: Monday, December 08, 2003 9:51 AM
Subject: Re: znovu trigger a FB


> > > (Old.Field1 <> New.Field1 and Old.Field2 <> New.Field2)
>
> > Jo ,tak jsem to mel taky, jenze to bude fungovat, jenom kdyz nova
hodnota
> > Field2 bude odlisna od puvodni hodnoty. Ale ona muze byt nekdy stejna
...
> > Rosta
>
> tak potom asi nechapu, co chces testovat. jestli jenom to, ze anijedno
> Field* neni null, tak to staci dat jako vlastnost pole (not null) a
> neni potreba na to delat trigger. pokud chces dosahnout toho, ze pole
> muzou byt null, ale kdyz zadas jedno, musi byt vyplneno i druhe,
> tak na to by sel udelat taky check, nebo v triggeru
> ...
> if (Field1 is null and Field2 is null or
> Field1 is not null and Field2 is not null) then
> ...
>
> peca

Uz posledni pokus to vysvetlit, pak uz dam pokoj ... :
Priklad:
puvodni hodnoty:
Field1 20
Field2 30

'legalni' operace, ktere trigger musi povolit:
uppdate table set Field1 = 40, Field2 = 50
uppdate table set Field1 = 20, Field2 = 50
uppdate table set Field1 = 40, Field2 = 30
uppdate table set Field1 = 20, Field2 = 30

zakazane operace, ktere trigger nepovoli a vyvola exception: (protoze se
meni pouze Field1)
uppdate table set Field1 = 40
uppdate table set Field1 = 20

Tzn. nikde zadne null ....
Rosta






Odpovedá: Jirka

8. 12. 2003 10:48

Tak to ti asi nepujde, ale mohl by sis do tej tabulky pridat dalsi field
a updatovat ho vzdy o jednicku.

V tom trigeru uz to pak poznas.

Jirka

Rostislav Lekes wrote:
> 'legalni' operace, ktere trigger musi povolit:
> uppdate table set Field1 = 40, Field2 = 50
> uppdate table set Field1 = 20, Field2 = 50
> uppdate table set Field1 = 40, Field2 = 30
> uppdate table set Field1 = 20, Field2 = 30
>
> zakazane operace, ktere trigger nepovoli a vyvola exception: (protoze se
> meni pouze Field1)
> uppdate table set Field1 = 40
> uppdate table set Field1 = 20
>
> Tzn. nikde zadne null ....



Odpovedá: petr palicka

8. 12. 2003 11:14

> zakazane operace, ktere trigger nepovoli a vyvola exception: (protoze se
> meni pouze Field1)
> uppdate table set Field1 = 40
> uppdate table set Field1 = 20
>
> Tzn. nikde zadne null ....

ale tohle ti nenastavi Field2 na null to bys musel
uppdate table set Field1 = 40, Field2 = null;
uppdate table set Field1 = 20, Field2 = null;

no a presne tohle sa da chytit podninkou v table check a neni na to
potreba zadny trigger. ono totiz z hlediska logiky fungovani a
vysledneho ulozeni dat neni zadny rozdil mezi:
uppdate table set Field1 = 40, Field2 = 50
--commit

nebo

uppdate table set Field1 = 40
uppdate table set Field2 = 50
--commit

takze osobne bych udelal:

alter table Table1 add constraint kontrola_field_1a2
   check (Field1 is null and Field2 is null or
          Field1 is not null and Field2 is not null);

tedy bud jsou obe pole prazdna, nebo obe plna.
pokud tedy jsou pole null, tak nepujde update
po polozkach, ale pokud uz jsou naplnena, tak
je lze menit postupne. pokud potrebujes, ze se
vzdy _musi_ udelat update obou polozek soucasne,
tak se obavam, ze to asi chytit dost dobre nejde.
muzes zkusit v triggeru chytat jestli new.Field1
nebo new.Field2 je null, ale nevim co v nem bude,
kdyz to pole nebude soucasti update. jestli to zkusis,
dej prosim vedet zjisteny vysledek.

peca


Odpovedá: Rostislav Lekes

8. 12. 2003 12:10


----- Original Message -----
From: "petr palicka" <palicka.petr@seznam.cz>
To: <delphi-l@clexpert.cz>
Sent: Monday, December 08, 2003 10:55 AM
Subject: Re: znovu trigger a FB


> > zakazane operace, ktere trigger nepovoli a vyvola exception: (protoze se
> > meni pouze Field1)
> > uppdate table set Field1 = 40
> > uppdate table set Field1 = 20
> >
> > Tzn. nikde zadne null ....
>
> ale tohle ti nenastavi Field2 na null to bys musel
> uppdate table set Field1 = 40, Field2 = null;
> uppdate table set Field1 = 20, Field2 = null;
>
> no a presne tohle sa da chytit podninkou v table check a neni na to
> potreba zadny trigger. ono totiz z hlediska logiky fungovani a
> vysledneho ulozeni dat neni zadny rozdil mezi:
> uppdate table set Field1 = 40, Field2 = 50
> --commit
>
> nebo
>
> uppdate table set Field1 = 40
> uppdate table set Field2 = 50
> --commit
>
> takze osobne bych udelal:
>
> alter table Table1 add constraint kontrola_field_1a2
> check (Field1 is null and Field2 is null or
> Field1 is not null and Field2 is not null);

Diky za snahu,
ale ten check me je nanic, podivej se na ten priklad.

>
> tedy bud jsou obe pole prazdna, nebo obe plna.
> pokud tedy jsou pole null, tak nepujde update
> po polozkach, ale pokud uz jsou naplnena, tak
> je lze menit postupne. pokud potrebujes, ze se
> vzdy _musi_ udelat update obou polozek soucasne,
> tak se obavam, ze to asi chytit dost dobre nejde.
> muzes zkusit v triggeru chytat jestli new.Field1
> nebo new.Field2 je null, ale nevim co v nem bude,
> kdyz to pole nebude soucasti update. jestli to zkusis,
> dej prosim vedet zjisteny vysledek.
>
> peca

Vubec nepotrebuju, aby probehlo naplneni soucasne, klidne to muze byt
postupne, ale podminka je, ze prikaz update obsahuje naplneni obou fieldu.
Jenomze kdyz je 'uppdate table set Field1 = 40' , tak v triggeru je
new.Field2= puvodni hodnota(v prikladu 20), neni tam null. Tak nevim. Jedine
co me napada, je povolit update pouze z konkretni stored procedury, ktera
bude definovana tak, ze muj problem vyresi, ale zase nevim, jak v triggeru
poznat, ze update se provadi z ulozene procedury. Nektere db (sybase) to pry
umoznuji, na FB jsem nic podobneho nenasel.
Rosta


Odpovedá: Pavel Cisar

8. 12. 2003 12:01

Haj hou!

On 8 Dec 2003 at 10:03, Rostislav Lekes wrote:

> Uz posledni pokus to vysvetlit, pak uz dam pokoj ... :
> Priklad:
> puvodni hodnoty:
> Field1 20
> Field2 30
>
> 'legalni' operace, ktere trigger musi povolit:
> uppdate table set Field1 = 40, Field2 = 50
> uppdate table set Field1 = 20, Field2 = 50
> uppdate table set Field1 = 40, Field2 = 30
> uppdate table set Field1 = 20, Field2 = 30
>
> zakazane operace, ktere trigger nepovoli a vyvola exception: (protoze se
> meni pouze Field1)
> uppdate table set Field1 = 40
> uppdate table set Field1 = 20
>
> Tzn. nikde zadne null ....

Chapu. Problem je v kontextu zmeny, ktera je ruzna u app. a z pohledu
triggeru. Jedine reseni je nepouzivat ruzne formulovane update pouze
na polozky ktere se meni, ale jeden obecny update kde se vzdy preda
vse (tedy i stejne).

S pozdravem
Pavel Cisar ( ICQ: 89017288)
Mobil: 724 281429
http://www.ibphoenix.cz
Vse co potrebujete pro Firebird a InterBase


Odpovedá: Ludek ZITA

8. 12. 2003 12:45


----- Original Message -----
From: "Rostislav Lekes" <rlekes@atlas.cz>

> puvodni hodnoty:
> Field1 20
> Field2 30
>
> 'legalni' operace, ktere trigger musi povolit:
> uppdate table set Field1 = 40, Field2 = 50
> uppdate table set Field1 = 20, Field2 = 50
> uppdate table set Field1 = 40, Field2 = 30
> uppdate table set Field1 = 20, Field2 = 30
>
> zakazane operace, ktere trigger nepovoli a vyvola exception: (protoze se
> meni pouze Field1)
> uppdate table set Field1 = 40
> uppdate table set Field1 = 20

Ahoj.
Vysvetli mi rozdil mezi:

> uppdate table set Field1 = 40, Field2 = 30 povoleno
> uppdate table set Field1 = 40 zakazano  

jestlize

> puvodni hodnoty:
> Field1 20
> Field2 30

To fakt nechapu.

Pokud to tedy z nejakeho mne neznameho duvodu vazne chces zajisit neco
podobneho pak jedine pres SP a netrap tim trigry, ty za to vazne nemuzou


Nebo taky lepsi analyza a struktura DB.....

Ludek



Odpovedá: Rostislav Lekes

8. 12. 2003 15:27


----- Original Message -----
From: "Ludek ZITA" <konference@sales.cz>
To: <delphi-l@clexpert.cz>
Sent: Monday, December 08, 2003 12:09 PM
Subject: Re: znovu trigger a FB


>
> ----- Original Message -----
> From: "Rostislav Lekes" <rlekes@atlas.cz>
>
> > puvodni hodnoty:
> > Field1 20
> > Field2 30
> >
> > 'legalni' operace, ktere trigger musi povolit:
> > uppdate table set Field1 = 40, Field2 = 50
> > uppdate table set Field1 = 20, Field2 = 50
> > uppdate table set Field1 = 40, Field2 = 30
> > uppdate table set Field1 = 20, Field2 = 30
> >
> > zakazane operace, ktere trigger nepovoli a vyvola exception: (protoze se
> > meni pouze Field1)
> > uppdate table set Field1 = 40
> > uppdate table set Field1 = 20
>
> Ahoj.
> Vysvetli mi rozdil mezi:
>
> > uppdate table set Field1 = 40, Field2 = 30 povoleno
> > uppdate table set Field1 = 40 zakazano  
  rozdil je v tom, ze po druhem update nemam ve Field2 aktualni hodnotu,
protoze ona muze, ale nemusi byt stejna ...

> jestlize
>
> > puvodni hodnoty:
> > Field1 20
> > Field2 30
>
> To fakt nechapu.
>
> Pokud to tedy z nejakeho mne neznameho duvodu vazne chces zajisit neco
> podobneho pak jedine pres SP a netrap tim trigry, ty za to vazne nemuzou
> : 
  SP pouziju tam, kde si ony updaty obsluhuju sam, ale jenom trigger me
to pohlida, kdyz tam nekdo vleze pres IBExperta nebo neco podobneho ...
>
> Nebo taky lepsi analyza a struktura DB.....
To samozrejmne ano, prubezne se snazime predelat starsi nevyhovujici model a
hledame reseni problemu, proto sem pisu ...
> Ludek

Ta hodnota ve Field2 je informace promenna v case, a NEKDY muze byt stejna,
jako v predchozim stavu. Ja jenom potrebuju zajistit, ze budu mit v DB udaj
Field2, ktery byl platny v dobe zmeny Field1. A protoze z povahy prace s DB
NEMUZU zajistit, ze budu do DB zapisovat pouze ja (muj program), coz jsem
schopen si ohlidat (nekdy je to tezke  a skutecne to delam pres SP, ale
muze tam jit zapsat nekdo jiny, coz uz se hlida hur a toto je jedina
moznost, ktera me napadla. Uz to pisu poctvrte: hodnota Field1 se muze
zmenit tehdy, kdyz se soucasne naplni aktualni hodnota do Field2. Bez ohledu
na to, co tam bylo predtim ...


Odpovedá: Radek KALA

8. 12. 2003 13:06

Tak udelej v beforeupdate trigeru neco takovyho

if (old.field1<> new.field1) and (old.field2 = new.field2) then
 exception xxx;

predpokladam ze oba fieldy jsou not null pokud ne tak si podminku
musis o toto rozsirit.

>
> ----- Original Message -----
> From: "Ludek ZITA" <konference@sales.cz>
> To: <delphi-l@clexpert.cz>
> Sent: Monday, December 08, 2003 12:09 PM
> Subject: Re: znovu trigger a FB
>
>
> >
> > ----- Original Message -----
> > From: "Rostislav Lekes" <rlekes@atlas.cz>
> >
> > > puvodni hodnoty:
> > > Field1 20
> > > Field2 30
> > >
> > > 'legalni' operace, ktere trigger musi povolit:
> > > uppdate table set Field1 = 40, Field2 = 50
> > > uppdate table set Field1 = 20, Field2 = 50
> > > uppdate table set Field1 = 40, Field2 = 30
> > > uppdate table set Field1 = 20, Field2 = 30
> > >
> > > zakazane operace, ktere trigger nepovoli a vyvola exception:
> > > (protoze se meni pouze Field1) uppdate table set Field1 = 40
> > > uppdate table set Field1 = 20
> >
> > Ahoj.
> > Vysvetli mi rozdil mezi:
> >
> > > uppdate table set Field1 = 40, Field2 = 30 povoleno
> > > uppdate table set Field1 = 40 zakazano  
>   rozdil je v tom, ze po druhem update nemam ve Field2 aktualni
> hodnotu, protoze ona muze, ale nemusi byt stejna ...
>
> > jestlize
> >
> > > puvodni hodnoty:
> > > Field1 20
> > > Field2 30
> >
> > To fakt nechapu.
> >
> > Pokud to tedy z nejakeho mne neznameho duvodu vazne chces zajisit
> > neco podobneho pak jedine pres SP a netrap tim trigry, ty za to
> > vazne nemuzou : 
>   SP pouziju tam, kde si ony updaty obsluhuju sam, ale jenom
> trigger me to pohlida, kdyz tam nekdo vleze pres IBExperta nebo neco
> podobneho ... > > Nebo taky lepsi analyza a struktura DB..... To
> samozrejmne ano, prubezne se snazime predelat starsi nevyhovujici
> model a hledame reseni problemu, proto sem pisu ... > Ludek
>
> Ta hodnota ve Field2 je informace promenna v case, a NEKDY muze byt
> stejna, jako v predchozim stavu. Ja jenom potrebuju zajistit, ze budu
> mit v DB udaj Field2, ktery byl platny v dobe zmeny Field1. A protoze
> z povahy prace s DB NEMUZU zajistit, ze budu do DB zapisovat pouze ja
> (muj program), coz jsem schopen si ohlidat (nekdy je to tezke  a
> skutecne to delam pres SP, ale muze tam jit zapsat nekdo jiny, coz uz
> se hlida hur a toto je jedina moznost, ktera me napadla. Uz to pisu
> poctvrte: hodnota Field1 se muze zmenit tehdy, kdyz se soucasne naplni
> aktualni hodnota do Field2. Bez ohledu na to, co tam bylo predtim ...
>
>
>


                     S pozdravem Radek KALA
                     BetaControl, s.r.o.
                     Cerneho 58/60, 635 00
                     tlf. : + 420 5 4622 3491
                     fax : + 420 5 4622 3470
                     GSM : + 420 603 85 75 15


Odpovedá: little_bobes@centrum.cz

8. 12. 2003 15:27

a co v BI, BU testovat:

begin
if (
    new.field2 is null or new.field2 = ''
   or
    new.field1 is null or new.field1 = ''
   )
    then exception nelze_zmenit;
...
// tady je jiste, ze field1 i field2 maji nejakou hodnotu
...
end
^

Bob

>
> Ta hodnota ve Field2 je informace promenna v case, a NEKDY muze byt
stejna,
> jako v predchozim stavu. Ja jenom potrebuju zajistit, ze budu mit v DB
udaj
> Field2, ktery byl platny v dobe zmeny Field1. A protoze z povahy prace s
DB
> NEMUZU zajistit, ze budu do DB zapisovat pouze ja (muj program), coz jsem
> schopen si ohlidat (nekdy je to tezke  a skutecne to delam pres SP, ale
> muze tam jit zapsat nekdo jiny, coz uz se hlida hur a toto je jedina
> moznost, ktera me napadla. Uz to pisu poctvrte: hodnota Field1 se muze
> zmenit tehdy, kdyz se soucasne naplni aktualni hodnota do Field2. Bez
ohledu
> na to, co tam bylo predtim ...
>



Odpovedá: Rostislav Lekes

8. 12. 2003 15:27


----- Original Message -----
From: "Radek KALA" <kala@betacontrol.cz>
To: <delphi-l@clexpert.cz>
Sent: Monday, December 08, 2003 1:05 PM
Subject: Re: znovu trigger a FB


> Tak udelej v beforeupdate trigeru neco takovyho
>
> if (old.field1<> new.field1) and (old.field2 = new.field2) then
> exception xxx;
>
> predpokladam ze oba fieldy jsou not null pokud ne tak si podminku
> musis o toto rozsirit.

Diky, oba fieldy jsou not null, ale old.field2 se nemusi, ale muze rovnat
new.field2, takze to neni ono ...
Rosta


Odpovedá: Rostislav Lekes

8. 12. 2003 15:27


----- Original Message -----
From: <little_bobes@centrum.cz>
To: <delphi-l@clexpert.cz>
Sent: Monday, December 08, 2003 1:15 PM
Subject: Re: znovu trigger a FB


> a co v BI, BU testovat:
>
> begin
> if (
> new.field2 is null or new.field2 = ''
> or
> new.field1 is null or new.field1 = ''
> )
> then exception nelze_zmenit;
> ...
> // tady je jiste, ze field1 i field2 maji nejakou hodnotu

To taky nejde ... pokud v UPDATE Field2 neni, tak v triggeru potom
new.field2 neni ani null, ani '', ale new.field2 = old.field2

> ...
> end
> ^
>
> Bob
>
> >
> > Ta hodnota ve Field2 je informace promenna v case, a NEKDY muze byt
> stejna,
> > jako v predchozim stavu. Ja jenom potrebuju zajistit, ze budu mit v DB
> udaj
> > Field2, ktery byl platny v dobe zmeny Field1. A protoze z povahy prace s
> DB
> > NEMUZU zajistit, ze budu do DB zapisovat pouze ja (muj program), coz
jsem
> > schopen si ohlidat (nekdy je to tezke  a skutecne to delam pres SP, ale
> > muze tam jit zapsat nekdo jiny, coz uz se hlida hur a toto je jedina
> > moznost, ktera me napadla. Uz to pisu poctvrte: hodnota Field1 se muze
> > zmenit tehdy, kdyz se soucasne naplni aktualni hodnota do Field2. Bez
> ohledu
> > na to, co tam bylo predtim ...
> >
>
>
>
>
>
>
>
>


Odpovedá: Radek KALA

8. 12. 2003 15:27

A muzes nam teda vysvetlit co je aktualni hodnota do Field2, jak se
teda poznam co je dobre a co ne.
>
> To taky nejde ... pokud v UPDATE Field2 neni, tak v triggeru potom
> new.field2 neni ani null, ani '', ale new.field2 = old.field2
>
> > ...
> > end
> > ^
> >
> > Bob
> >
> > >
> > > Ta hodnota ve Field2 je informace promenna v case, a NEKDY muze
> > > byt
> > stejna,
> > > jako v predchozim stavu. Ja jenom potrebuju zajistit, ze budu mit
> > > v DB
> > udaj
> > > Field2, ktery byl platny v dobe zmeny Field1. A protoze z povahy
> > > prace s
> > DB
> > > NEMUZU zajistit, ze budu do DB zapisovat pouze ja (muj program),
> > > coz
> jsem
> > > schopen si ohlidat (nekdy je to tezke  a skutecne to delam pres
> > > SP, ale muze tam jit zapsat nekdo jiny, coz uz se hlida hur a toto
> > > je jedina moznost, ktera me napadla. Uz to pisu poctvrte: hodnota
> > > Field1 se muze zmenit tehdy, kdyz se soucasne naplni aktualni
> > > hodnota do Field2. Bez
> > ohledu
> > > na to, co tam bylo predtim ...
> > >
> >
> >
> >
> >
> >
> >
> >
> >
>
>
>


                     S pozdravem Radek KALA
                     BetaControl, s.r.o.
                     Cerneho 58/60, 635 00
                     tlf. : + 420 5 4622 3491
                     fax : + 420 5 4622 3470
                     GSM : + 420 603 85 75 15


Odpovedá: petr palicka

8. 12. 2003 15:27

> to pisu poctvrte: hodnota Field1 se muze
> zmenit tehdy, kdyz se soucasne naplni aktualni
> hodnota do Field2. Bez ohledu na to, co tam bylo predtim ...

ja taaak. uz tomu rozumim  
no takze vidim moznost ve volani SP, ktera bude
vyzadovat zadani obou hodnot. dale musis nastavit
prava pro update tabulky tak, aby to mohla delat
jenom k tomu urcena SP, nikoli libovolny uzivatel
pomoci update.

tim se nevyhnes tomu, ze SYSDBA a VLASTNIK databaze
muzou tak jako tak vice mene cokoliv, protoze si
muzou nastavir granty podle potreby. jenze to uz
je vec kdy si uzivatel zaslouzi: "urazit pazoury
u samy prdele"  

peca


Odpovedá: Ludek ZITA

9. 12. 2003 20:45


----- Original Message -----
From: "Rostislav Lekes" <rlekes@atlas.cz>
>
> Ta hodnota ve Field2 je informace promenna v case, a NEKDY muze byt
stejna,
> jako v predchozim stavu. Ja jenom potrebuju zajistit, ze budu mit v DB
udaj
> Field2, ktery byl platny v dobe zmeny Field1. A protoze z povahy prace s
DB
> NEMUZU zajistit, ze budu do DB zapisovat pouze ja (muj program), coz jsem
> schopen si ohlidat (nekdy je to tezke  a skutecne to delam pres SP, ale
> muze tam jit zapsat nekdo jiny, coz uz se hlida hur a toto je jedina
> moznost, ktera me napadla. Uz to pisu poctvrte: hodnota Field1 se muze
> zmenit tehdy, kdyz se soucasne naplni aktualni hodnota do Field2. Bez
ohledu
> na to, co tam bylo predtim ...

Ahoj.
Takze je spatne postaveny datovy model nebo se spatne "ptas". Je li Field2
informace promenna v case budes muset najit nejkou kontrolu nejspise oproti
casu (opravdu bych asi musel vedet vic)
protoze ty po nas potazmo po DB striju chces aby 1=1 byla jednou pravda a
jednou ne a tu treti podminku nam ne a ne rici.

Ludek